package app.fichajes.data.parser;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.graphics.drawable.Drawable;
import android.util.Log;
import app.fichajes.constants.Constants;
import app.fichajes.data.Equipo;
import app.fichajes.main.R;
import app.fichajes.utils.StringUtils;

import com.gi.libraryutility.main.ActivityUtility;
import com.gi.libraryutility.parser.BaseFeedParser;

public class FacadeEquipos extends BaseFeedParser{
	
	private Equipo equipo;
	private Map<String, Equipo> mapEquiposBBVA;
	private List<Equipo> listEquiposForGrid;

	//Constructor
	public FacadeEquipos(String feedUrl) {
		super(feedUrl);
		mapEquiposBBVA = new HashMap<String, Equipo>();
		listEquiposForGrid = new ArrayList<Equipo>();
	}

	//Metodos sobreescritos
	@Override
	protected void inicializeTag(XmlPullParser parser) throws XmlPullParserException, IOException {
		
		String valueTag = parser.getName();
		
		if(valueTag.equals(Constants.TAG_NOMBRE_EQUIPO))
			equipo = new Equipo(parser.nextText());
		
	}
	
	@Override
	protected void finalizeTag(XmlPullParser parser) {
		
		String valueTag = parser.getName();
		
		if(valueTag.equals(Constants.TAG_NOMBRE_EQUIPO)){
			String nombreEquipo = equipo.getNombre();
			Drawable escudo = rellenaListaDrawableEscudosBBVA(nombreEquipo);
			equipo.setEscudo(escudo);
			
			mapEquiposBBVA.put(nombreEquipo, equipo);
			listEquiposForGrid.add(equipo);
		}
	}

	

	@Override
	protected void startDocument(XmlPullParser parser) {
		//ESTO NOS LA PELA
	}
	@Override
	protected void endDocument(XmlPullParser parser) {
		//ESTO NOS LA PELA
	}
	@Override
	protected void text(XmlPullParser parser) {
		//ESTO NOS LA PELA
	}
	
	
	//Metodos propios
	public Map<String,Equipo> getMapEquiposBBVA(){
		return mapEquiposBBVA;
	}
	
	public List<Equipo> getListEquiposBBVA(){
		return listEquiposForGrid;
	}
	
	
	
	private Drawable rellenaListaDrawableEscudosBBVA(String nombreEquipo){
		String nombre = StringUtils.transformaString(nombreEquipo);
		Drawable escudo = ActivityUtility.getActivityActual().getResources().getDrawable(R.drawable.escudo_generico);
		try {
			escudo = Drawable.createFromStream(ActivityUtility.getActivityActual().getAssets().open(Constants.PATH_ESCUDOS + nombre + ".png"), nombre);
		} catch (IOException e) {
			Log.d("FacadeEquipos","No se ha podido obtener el escudo de assets");
			e.printStackTrace();
		}
		
		return escudo;
	}

}
